package com.lsq.util;
/**
 * 
 * @ClassName: StringUtil 
 * @Description: 字符串处理工具类
 * @author: charles
 * @date: 2021年7月20日 下午7:41:34
 */
public class StringUtil {
	
	/**
	* 功能：检查包含空白字符在内的字符系列长度
	* 示例：
	* StringUtil.hasLength(null) -> false
	* StringUtil.hasLength("") -> false
	* StringUtil.hasLength(" ") -> true
	* StringUtil.hasLength("Hello") -> true
	*/
	public static boolean hasLength(String src){
		
		return src!=null&&src.length()>0;
		
	}
	
	/**
	* 功能：检查包含空白字符在内的字符系列长度，并处理过滤前后空格
	* 示例：
	* StringUtil.hasText(null) -> false
	* StringUtil.hasText("") -> false
	* StringUtil.hasText(" ") -> false
	* StringUtil.hasText("Hello") -> true
	*/
	public static boolean hasText(String src){
		return src!=null&&src.trim().length()>0;
	}
	/**
	* 功能：验证是否为合格邮箱
	* 示例：
	* StringUtil.isEmail(null) -> false
	* StringUtil.isEmail("") -> false
	* StringUtil.isEmail("zhangjihao@") -> false
	* StringUtil.isEmail("zhangjihao@sohu") -> false
	* StringUtil.isEmail("zhangjihao@sohu.com") -> true
	*/
	public static boolean isEmail(String email){
		if(!hasText(email))
			return false;
		//定义邮箱的规则
		String regex="^([a-z0-9A-Z]+[-|_|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
		return  email.matches(regex);
	}
	/**
	* 功能：验证是否为合格手机号
	* 示例：
	* StringUtil.isPhone(null) -> false
	* StringUtil.isPhone("") -> false
	* StringUtil.isPhone("14312039428") -> false
	* StringUtil.isPhone("13900139000") -> true
	*/
	public static boolean isPhone(String src){
		if(!hasText(src))
			return false;
		String regex="1[35789]\\d{9}";
		
		return src.matches(regex);
	}
	
	/**
	* 功能：判断是否全部为字母
	* 示例：
	* StringUtil.isLetter(null) -> false
	* StringUtil.isLetter("") -> false
	* StringUtil.isLetter(".com") -> false
	* StringUtil.isLetter("howSun") -> true
	*/
	public static boolean isLetter(String src){
		
		if(!hasText(src))
			return false;
		String regex="[a-zA-Z]+";
		return src.matches(regex);
	}
	/**
	* 功能：反转字符串
	* 示例："abcd" → "dcba"
	*
	* 参数1：src，源字符串
	* 返回值：反转的字符串
	*/
	public static String reverse(String src){
		if(!hasText(src))
			return "请输入要反转的内容";
		StringBuffer sb =new StringBuffer(src);
		return sb.reverse().toString();
	}
	
	/**
	* 功能：隐藏字符串
	* 示例：StringUtil.hidden("13856237928", 3,7) -> "138****7928"
	* 参数1：src，源字符串
	* 参数2：start，从开始的位置隐藏，如果为空，则全部不隐藏，
	* 参数3：end，结束位置，如果为空或为-1，则直到末尾都隐藏，如果超过源字符串长度，则只到末尾
	* 返回值：隐藏结果
	*/
	public static String hidden(String src, Integer start, Integer end){
		if(!hasText(src))
			return "请输入要反转的内容";
		String prefix=src.substring(0,start);//头
		String suffix=src.substring(end, src.length())  ;//尾
		String letter="";
		for(int i = 0 ;i<end-start;i++){
			letter+="*";
		}
		
		
		return prefix + letter +suffix;
	}

}
